home *** CD-ROM | disk | FTP | other *** search
-
-
-
- EEEEXXXXCCCCEEEEPPPPTTTTIIIIOOOONNNN((((3333CCCC)))) EEEEXXXXCCCCEEEEPPPPTTTTIIIIOOOONNNN((((3333CCCC))))
-
-
-
- NNNNAAAAMMMMEEEE
- exc_resume, exc_setjmp, find_fde, find_fde_name, exc_unwind,
- exc_unwind_name - exception handling facility
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- ####iiiinnnncccclllluuuuddddeeee <<<<eeeexxxxcccceeeeppppttttiiiioooonnnn....hhhh>>>>
-
- ####iiiiffff ((((ddddeeeeffffiiiinnnneeeedddd((((____LLLLAAAANNNNGGGGUUUUAAAAGGGGEEEE____CCCC)))) |||||||| ddddeeeeffffiiiinnnneeeedddd((((____LLLLAAAANNNNGGGGUUUUAAAAGGGGEEEE____CCCC____PPPPLLLLUUUUSSSS____PPPPLLLLUUUUSSSS))))))))
- DDDDwwwwaaaarrrrffff____FFFFddddeeee
- ffffiiiinnnndddd____ffffddddeeee((((lllloooonnnngggg ppppcccc))));;;;
-
- DDDDwwwwaaaarrrrffff____FFFFddddeeee
- ffffiiiinnnndddd____ffffddddeeee____nnnnaaaammmmeeee((((lllloooonnnngggg ppppcccc,,,, cccchhhhaaaarrrr ********nnnnaaaammmmeeee))));;;;
-
- vvvvooooiiiidddd eeeexxxxcccc____uuuunnnnwwwwiiiinnnndddd((((ssssttttrrrruuuucccctttt ssssiiiiggggccccoooonnnntttteeeexxxxtttt ****ssssccccpppp,,,, DDDDwwwwaaaarrrrffff____FFFFddddeeee ffffddddeeee))));;;;
-
- vvvvooooiiiidddd eeeexxxxcccc____uuuunnnnwwwwiiiinnnndddd____nnnnaaaammmmeeee((((ssssttttrrrruuuucccctttt ssssiiiiggggccccoooonnnntttteeeexxxxtttt ****ssssccccpppp,,,, DDDDwwwwaaaarrrrffff____FFFFddddeeee ffffddddeeee,,,, cccchhhhaaaarrrr ********nnnnaaaammmmeeee))));;;;
-
- iiiinnnntttt eeeexxxxcccc____rrrreeeessssuuuummmmeeee((((ssssttttrrrruuuucccctttt ssssiiiiggggccccoooonnnntttteeeexxxxtttt ****ssssccccpppp))));;;;
-
- vvvvooooiiiidddd eeeexxxxcccc____sssseeeettttjjjjmmmmpppp((((ssssttttrrrruuuucccctttt ssssiiiiggggccccoooonnnntttteeeexxxxtttt ****ssssccccpppp))));;;;
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- NOTE: this version (4.0) of exception handling facility is totally
- different from the (3.xx) versions. This version extracts information
- from the ._d_e_b_u_g__f_r_a_m_e section instead of the _r_u_n_t_i_m_e _p_r_o_c_e_d_u_r_e _t_a_b_l_e as
- in the prior releases. All the old functions -- exception_dispatcher,
- find_rpd, set_unhandled_exception and unwind -- are no longer supported.
-
- To handle exceptions from UNIX signals and to minimize the cost at
- runtime until an exception is encountered, the loader collects per-
- procedure exception information and frame information so that the stack
- unwinds easily at the point of exception.
-
- The data structure _D_w_a_r_f__F_d_e is specified in the (._d_e_b_u_g__f_r_a_m_e) section.
- Please refer to the _D_W_A_R_F _D_e_b_u_g_g_i_n_g _I_n_f_o_r_m_a_t_i_o_n _F_o_r_m_a_t for more details.
-
- At runtime the following procedures will be provided in _l_i_b_e_x_c._s_o:
-
- _f_i_n_d__f_d_e will return the Frame Description Entry(FDE) specified by the pc
- argument, if there is one, otherwise it will return NULL.
-
- _f_i_n_d__f_d_e__n_a_m_e does the same thing as _f_i_n_d__f_d_e but in addition returns the
- name of the procedure through the parameter _n_a_m_e.
-
- _e_x_c__u_n_w_i_n_d will take the sigcontext scp argument and virtually unwind by
- changing the fields to reflect the next frame on the stack. A _s_i_g_r_e_t_u_r_n
- call can be called with this scp upon return and will return to the frame
- unwind set up. The fde argument is used as the Frame Description Entry
- argument. If it is NULL, _e_x_c__u_n_w_i_n_d will call _f_i_n_d__f_d_e on scp->sc_pc to
- get it. If _e_x_c__u_n_w_i_n_d is unable to unwind the stack, it will set the
- _s_c__p_c field of the _s_c_p parameter to 1, indicating invalid address.
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- EEEEXXXXCCCCEEEEPPPPTTTTIIIIOOOONNNN((((3333CCCC)))) EEEEXXXXCCCCEEEEPPPPTTTTIIIIOOOONNNN((((3333CCCC))))
-
-
-
- _e_x_c__u_n_w_i_n_d__n_a_m_e does the same thing as _e_x_c__u_n_w_i_n_d but in addition returns
- the name of the procedure of the current sigcontext through the parameter
- _n_a_m_e.
-
- _e_x_c__s_e_t_j_m_p is like setjmp, except that it saves V0 and also sets a
- special magic number so that exc_resume can tell which degree of
- restoration is required.
-
- _e_x_c__r_e_s_u_m_e is like longjmp, except that it restores the v0 that
- _e_x_c__s_e_t_j_m_p saved and performs one of the three different degress of
- restoration, according to the magic number in the sigcontext.
-
- UUUUSSSSAAAAGGGGEEEE
- cc main.o -lexc -ldwarf -lelf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-